//
//  ZXVistorView.swift
//  ZXWeibo
//
//  Created by mac on 15/11/23.
//  Copyright © 2015年 itcast. All rights reserved.
//

import UIKit

protocol ZXVistorViewDelegate: NSObjectProtocol
{
    //默认是必须实现的方法
    //登陆按钮点击
    func vistorViewLoginClick()
}



class ZXVistorView: UIView {
    
    weak var delegate: ZXVistorViewDelegate?
    
//swift默认所以的View都能通过XIB/storyboard 加载
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override init(frame: CGRect) {
        //super是要在设置普通的存储型属性的下面
        super.init(frame: frame)
        
        //设置背景颜色
        backgroundColor = UIColor(white: 237 / 255.0, alpha: 1)
        
        prepareUI()
    }
    
    
    //MARK: - 转轮动画
    /**
    给转轮添加动画
    */
    func rotationAnimation()
    {
        //核心动画，旋转
        
        let rotation = CABasicAnimation(keyPath: "transform.rotation")
        
        //设置动画参数
        rotation.toValue = 2 * M_PI
        //旋转时间
        rotation.duration = 20
        //旋转次数
        rotation.repeatCount = MAXFLOAT
        
        //设置在切换控制器的时候转轮不会移除动画
        rotation.removedOnCompletion = false
        
        //开始核心动画
        iconView.layer.addAnimation(rotation, forKey: "rotation")
    }
    
    //MARK: - 核心动画开始和暂停
    /**
    暂停旋转
    */
func pauseAnimation()
{
    //记录暂停时间
    let pauseTime = iconView.layer.convertTime(CACurrentMediaTime(), fromLayer: nil)
    
    //设置动画速度为0
    iconView.layer.speed = 0
    
    //设置动画偏移时间
    iconView.layer.timeOffset = pauseTime
    
}
    
    func resumeAnimation()
    {
        //获取暂停时间
        let pauseTime = iconView.layer.timeOffset
        
        //设置动画速度为1
        iconView.layer.speed = 1
        iconView.layer.timeOffset = 0
        iconView.layer.beginTime = 0
        
        let timeSincePause = iconView.layer.convertTime(CACurrentMediaTime(), fromLayer: nil) - pauseTime
        
        iconView.layer.beginTime = timeSincePause
    }
    
    /**
    设置每个控制去界面图片
    :param: imageName 图片的名字
    */
    func setupVistorView(imageName: String, message: String)
    {
        //图片，替换转轮图片
        iconView.image = UIImage(named: imageName)
        
        //文字
        messageLabel.text = message
        
        //隐藏小房子
        homeView.hidden = true
        
        //隐藏遮盖视图
        coverView.hidden = true
        
    }
    
    /**
    准备UI
    */
    func prepareUI()
    {
        //1 添加子控件
        addSubview(iconView)
        addSubview(coverView)
        addSubview(homeView)
        addSubview(messageLabel)
        addSubview(registerButton)
        addSubview(loginButton)
        
        //设置控件的约束
        iconView.translatesAutoresizingMaskIntoConstraints = false;
        homeView.translatesAutoresizingMaskIntoConstraints = false;
        messageLabel.translatesAutoresizingMaskIntoConstraints = false;
        registerButton.translatesAutoresizingMaskIntoConstraints = false;
        loginButton.translatesAutoresizingMaskIntoConstraints = false;
        coverView.translatesAutoresizingMaskIntoConstraints = false;
        
        
        //创建约束对象
        /**
        *
        /// iconView CenterX与父控件的CenterX重合
        // item: 要添加约束的view
        // attribute: 设置的约束
        // relatedBy: Equal
        // toItem: 参照的view
        // attribute: 参照的view的约束
        */
        addConstraint(NSLayoutConstraint(item: iconView, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0))
        
        /// iconView CenterY与父控件的CenterY重合
         addConstraint(NSLayoutConstraint(item: iconView, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0))
        
        //小房子
        addConstraint(NSLayoutConstraint(item: homeView, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0))
         addConstraint(NSLayoutConstraint(item: homeView, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0))
        
        //消息
//        x
        addConstraint(NSLayoutConstraint(item: messageLabel, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: iconView, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0))
//        y
        addConstraint(NSLayoutConstraint(item: messageLabel, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: iconView, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0))
//        宽度约束
         // 当 toItem = nil时attribute必须设置为NSLayoutAttribute.NotAnAttribute
        addConstraint(NSLayoutConstraint(item: messageLabel, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 226))
        
        //注册按钮
        //左对齐
         addConstraint(NSLayoutConstraint(item: registerButton, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: messageLabel, attribute: NSLayoutAttribute.Left, multiplier: 1, constant: 0))
        //顶部间距
        addConstraint(NSLayoutConstraint(item: registerButton, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: messageLabel, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 16))
        //        宽度约束
        // 当 toItem = nil时attribute必须设置为NSLayoutAttribute.NotAnAttribute
        addConstraint(NSLayoutConstraint(item: registerButton, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 90))
        //高
        addConstraint(NSLayoutConstraint(item: registerButton, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 35))
        
        //登录按钮
        //右对齐
        addConstraint(NSLayoutConstraint(item: loginButton, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal, toItem: messageLabel, attribute: NSLayoutAttribute.Right, multiplier: 1, constant: 0))
        //顶部间距
        addConstraint(NSLayoutConstraint(item: loginButton, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: messageLabel, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 16))
        //        宽度约束
        // 当 toItem = nil时attribute必须设置为NSLayoutAttribute.NotAnAttribute
        addConstraint(NSLayoutConstraint(item: loginButton, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 90))
        //高
        addConstraint(NSLayoutConstraint(item: loginButton, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 35))
        
        //遮盖视图约束
        //左边
         addConstraint(NSLayoutConstraint(item: coverView, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Left, multiplier: 1, constant: 0))
        //右边
        addConstraint(NSLayoutConstraint(item: coverView, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Right, multiplier: 1, constant: 0))
        //上面
        addConstraint(NSLayoutConstraint(item: coverView, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 0))
//        下面
        addConstraint(NSLayoutConstraint(item: coverView, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: loginButton, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0))
    }
  
    
  
    // MARK: - 懒加载
    //转轮
    private lazy var iconView: UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_image_smallicon"))
    
    //小房子
    private lazy var homeView: UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_image_house"))

    //设置消息
    private lazy var messageLabel: UILabel =
    {
        let label = UILabel()
        
        label.textColor = UIColor.darkGrayColor()
        
        //设置label文本
        label.text = "关注一些人，看看又什么惊喜"
        label.numberOfLines = 0
        
        //根据文本来适应大小
        label.sizeToFit()
        
        return label
    }()
    
    /// 设置注册按钮
    private lazy var registerButton: UIButton =
    {
        let button = UIButton()
        //设置按钮的背景颜色
        button.setBackgroundImage(UIImage(named: "common_button_white_disable"), forState: UIControlState.Normal)
       //设置文本
        button.setTitle("注册", forState: UIControlState.Normal)
        
        //设置文本颜色
        button.setTitleColor(UIColor.orangeColor(), forState: UIControlState.Normal)
        
        //设置文本大小
        button.titleLabel?.font = UIFont.boldSystemFontOfSize(14)
        
        //设置自适应
        button.sizeToFit()
        
        return button
    }()
    
    /// 登录
    private lazy var loginButton: UIButton =
    {
        let button = UIButton()
        //设置按钮的背景颜色
        button.setBackgroundImage(UIImage(named: "common_button_white_disable"), forState: UIControlState.Normal)
        //设置文本
        button.setTitle("登录", forState: UIControlState.Normal)
        
        //设置文本颜色
        button.setTitleColor(UIColor.orangeColor(), forState: UIControlState.Normal)
        
        //设置文本大小
        button.titleLabel?.font = UIFont.boldSystemFontOfSize(14)
        
        //设置自适应
        button.sizeToFit()
        
    button.addTarget(self, action: "loginClick", forControlEvents: UIControlEvents.TouchDragInside)
        
        return button
        }()
    
    func loginClick()
    {
        print("点击了")
        
        //通知代理
        delegate?.vistorViewLoginClick()
    }
    
 /// 遮盖视图
    private lazy var coverView: UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_mask_smallicon"))
}
